package com.yujiahao.bigdata.rdd.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark_RDD_Pper_Transform_GroupByKey {
  def main(args: Array[String]): Unit = {


    //TODO 1、获得连接
    val conf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc: SparkContext = new SparkContext(conf)


    val rdd = sc.makeRDD(List(("a", 1), "a" -> 2, ("a" -> 3), "a" -> 4), 2)

    //TODO GroupBy算子可以将任意的数据作为分组的标记。也可以实现Word Count（3 /10）
    // GroupByKey算子可以采用数据的key作为分组的标记，返回结果为元组类型，
    // 元组类型第一个值表示分组标记（Key）,元组类型第二值表示相同标记的数据V的集合
    val value: RDD[(String, Iterable[Int])] = rdd.groupByKey()
    value.mapValues(_.sum).collect().foreach(println)
    //TODO 2、关闭连接
    sc.stop()
  }
}